home *** CD-ROM | disk | FTP | other *** search
- '**************************************************************************
- '* Earthquake Setup
- '**************************************************************************
-
- '$DEFINE DEBUG ''Define for script development/debugging
-
- '$INCLUDE 'setupapi.inc'
- '$INCLUDE 'msdetect.inc'
-
- ''Dialog ID's
- CONST WELCOME = 100
- CONST ASKQUIT = 200
- CONST DESTPATH = 300
- CONST EXITFAILURE = 400
- CONST EXITQUIT = 600
- CONST EXITSUCCESS = 700
- CONST OPTIONS = 800
- CONST ADDHELP = 900
- CONST QTNONE = 1100
- CONST QTOLDER = 1200
- CONST QTNEWER = 1300
- CONST QTINCOMPLETE = 1400
- CONST APPPATH = 1700
- CONST WARN2 = 1800
- CONST SINGLELIST = 1900
- CONST EXTENDEDLIST = 3900
- CONST TOOBIG = 6300
- CONST BADPATH = 6400
- CONST CDBADFILE = 7200
- CONST CDBADNAME = 7700
-
- ''Bitmap ID
- ''CONST LOGO = 1
-
- GLOBAL DEST$ '' Application destination path
- GLOBAL CUIDLL$ '' Custom DLL
- GLOBAL WinDrive$ '' Drive letter Windows is installed.
- GLOBAL SrcDir$ ''
- GLOBAL QTDirNeeded% '' Status if a QT files need to be copied.
- GLOBAL QTFileCount% '' Number of QT files to check/copy.
- GLOBAL QTDestDir$ '' Default destination directory for QT.
- GLOBAL QTWSrcDir$ '' Directory where QT should/is installed
- GLOBAL AutoexecWasModified%
- GLOBAL RestartWindows% '' Status if need message to Restart Windows
- GLOBAL szSectionYear%
- GLOBAL szSectionMonth%
- GLOBAL szSectionDay%
- GLOBAL CheckQTFiles% '' Did we already check for the QT Files?
- GLOBAL BackedUp% '' Status that user selected backup
- GLOBAL CopyChoice$
- GLOBAL UserChoice$
- GLOBAL AutoExecChoice$
- GLOBAL CDdrive$
-
- DECLARE FUNCTION QTFilesOkay (szTemp$) AS INTEGER
- DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
- DECLARE FUNCTION VerifyQTDate (szDate$) AS INTEGER
- DECLARE FUNCTION GetNewDestination ( szDir$ ) AS STRING
- DECLARE FUNCTION AddCDromDriveLetter ( szLabel$, szWord$) AS INTEGER
- DECLARE SUB PromptQT (szType%)
- DECLARE SUB CreateIcon
- DECLARE FUNCTION SoundCardFound LIB "mscuistf.dll" () AS INTEGER
- DECLARE FUNCTION ChangeDriveLetter LIB "mscuistf.dll" (Setin$, Setout$, szLetter$, szWord$) AS INTEGER
- DECLARE FUNCTION AppendToPath LIB "mscuistf.dll" (Setin$, Setout$, szPath$) AS INTEGER
- DECLARE FUNCTION Verify256Color LIB "mscuistf.dll" () AS INTEGER
-
- START:
- SetTitle "Earthquake Setup"
- CUIDLL$ = "mscuistf.dll" ''Custom user interface dll
- DEST$ = "C:\QUAKE"
- CheckQTFiles% = 0
- SoundCardWarning% = 0
-
- szInf$ = GetSymbolValue("STF_SRCINFPATH")
- IF szInf$ = "" THEN
- szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF"
- END IF
- ReadInfFile szInf$
-
- WinDrive$ = MID$(GetWindowsDir, 1, 1)
- IF IsDriveValid(WinDrive$) = 0 THEN
- i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
- GOTO QUIT
- END IF
-
- CHECKWINVER: '' Verify Windows 3.1 or later
- WinMaj% = GetWindowsMajorVersion()
- IF (WinMaj% < 3 OR (WinMaj% = 3 AND GetWindowsMinorVersion() < 10)) THEN
- WRONGVER:
- sz$ = UIStartDlg(CUIDLL$, CDBADNAME, "FInfoDlgProc", 0, "")
- IF sz$ = "EXIT" THEN
- UIPop 1
- END
- ELSE
- GOTO WRONGVER
- ENDIF
- ENDIF
-
- WELCOME:
- sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSE
- GOSUB ASKQUIT
- GOTO WELCOME
- ENDIF
-
-
- GETPATH:
- SetSymbolValue "EditTextIn", DEST$
- SetSymbolValue "EditFocus", "END"
-
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, APPPATH, "FEditDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- DEST$ = GetSymbolValue("EditTextOut")
- IF IsDirWritable(DEST$) = 0 THEN
- GOSUB BADPATH
- GOTO GETPATHL1
- ENDIF
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETPATHL1
- ELSEIF sz$ = "BACK" THEN
- DEST$ = GetSymbolValue("EditTextOut")
- UIPop 1
- GOTO WELCOME
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO GETPATHL1
- ENDIF
-
- SrcDir$ = GetSymbolValue("STF_SRCDIR")
- QTFileCount% = 12
- QTWSrcDir = MakePath(SrcDir$,"QTW")
- AutoexecWasModified% = 0
- RestartWindows% = 0
- ClearCopyList
-
-
- SELECTCDDRIVE:
- SetSymbolValue "ListItemsIn", ""
- GetNetworkDrivesList "ListItemsIn"
- CD1:
- sz$ = UIStartDlg(CUIDLL$, SINGLELIST, "FListDlgProc", 0, "")
- CDdrive$ = GetListItem("ListItemsOut", 1)
- IF sz$ = "CONTINUE" THEN
- IF CDdrive$ = "" THEN
- GOTO CD1
- ELSE
- UIPop 1
- ENDIF
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO CD1
- ELSEIF sz$ = "BACK" THEN
- UIPop 1
- GOTO GETPATH
- ELSE
- GOSUB ASKQUIT
- GOTO CD1
- END IF
-
- QTCHECK:
- IF CheckQTFiles% = 0 THEN
- FilesOkay% = QTFilesOkay("")
- IF FilesOkay% = 3 THEN
- CopyChoice$ = "2"
- ELSE
- CopyChoice$ = "1"
- ENDIF
- UserChoice$ = "1"
- AutoExecChoice$ = "1"
- ENDIF
-
- QTPROMPT:
- IF FilesOkay% <> 0 THEN '' QT Files aren't Okay
- IF FilesOkay% = 1 THEN
- PromptQT QTNONE
- ELSEIF FilesOkay% = 2 THEN
- PromptQT QTOLDER
- ELSEIF FilesOkay% = 3 THEN
- PromptQT QTNEWER
- ELSEIF FilesOkay% = 4 THEN
- PromptQT QTINCOMPLETE
- ENDIF
-
- QTDESTINATION:
- QTDirNeeded% = 0
- AutoexecWasModified% = 0
- IF BackedUp% = 0 THEN
- IF UserChoice$ = CopyChoice$ THEN
- QTDirNeeded% = 1
- szTmp$ = QTDestDir$
- QTDestDir$ = GetNewDestination(szTmp$)
- IF BackedUp% = 0 THEN
- IF FilesOkay% = 1 THEN
- AutoexecWasModified% = 1
- ELSEIF szTmp$ <> QTDestDir$ THEN
- AutoexecWasModified% = 1
- ENDIF
- ELSE
- GOTO QTPROMPT
- ENDIF
- ELSE
- GOTO DOINSTALL
- ENDIF
- ELSE
- GOTO GETPATH
- ENDIF
-
- BackedUp% = 0
- IF AutoexecWasModified% = 1 THEN
- SetSymbolValue "RadioDefault", AutoExecChoice$
- AUTOPROMPT:
- sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- rtn% = AppendToPath("C:\AUTOEXEC.BAT", "C:\AUTOEXEC.QTW", QTDestDir$)
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO AUTOPROMPT
- ELSEIF sz$ = "BACK" THEN
- AutoExecChoice$ = GetSymbolValue("ButtonChecked")
- UIPop 1
- GOTO QTDESTINATION
- ELSEIF sz$ = "EXIT" THEN
- GOSUB ASKQUIT
- GOTO AUTOPROMPT
- END IF
-
- AutoExecChoice$ = GetSymbolValue("ButtonChecked")
- IF AutoExecChoice$ = "1" THEN
- CopyFile "C:\AUTOEXEC.BAT", "C:\AUTOEXEC.BAK", cmoOverwrite, 0
- CopyFile "C:\AUTOEXEC.QTW", "C:\AUTOEXEC.BAT", cmoOverwrite, 0
- RemoveFile "C:\AUTOEXEC.QTW", cmoForce
- ENDIF
- ENDIF
- ENDIF
-
-
-
- DOINSTALL:
-
- AddSectionFilesToCopyList "Files", SrcDir$, DEST$
-
- IF QTDirNeeded% = 1 THEN
- AddSectionFilesToCopyList "Quick Time", QTWSrcDir$, QTDestDir$
- ENDIF
-
-
-
- IF GetCopyListCost(szExtras$, szCosts$, szNeededs$) <> 0 THEN
- CHECKSPACE:
- sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO CHECKSPACE
- ENDIF
- UIPop 1
- END
- ENDIF
-
- IF QTDirNeeded% = 1 THEN
- IF DoesDirExist(QTDestDir$) = 0 THEN
- CreateDir QTDestDir$, cmoNone
- ENDIF
- ENDIF
-
- IF DoesDirExist(DEST$) = 0 THEN
- CreateDir DEST$, cmoNone
- ENDIF
-
- CopyFilesInCopyList
-
-
- CreateIcon
-
- rtn% = AddCDromDriveLetter("SYS", ".groupFileNames[]")
- IF rtn% <> 0 THEN
- i% = DoMsgBox("QUAKEP.SYS not updated. Contact technical support at 1-800-654-8802.", "Setup Warning", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- ENDIF
-
- rtn% = AddCDromDriveLetter("INI", "AssetPath")
- IF rtn% <> 0 THEN
- i% = DoMsgBox("QUAKE.INI not updated. Contact technical support at 1-800-654-8802.", "Setup Warning", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- ENDIF
-
- InvalidSystem% = 0
- SetSymbolValue "ListItemsIn", ""
-
-
- SOUNDCHECK:
- IF SoundCardFound() = 0 THEN
- AddListItem "ListItemsIn", "A Sound Card."
- InvalidSystem% = 1
- SoundCardWarning% = 2
- ENDIF
-
-
- MOUSECHECK:
- IF HasMouseInstalled() = 0 THEN
- AddListItem "ListItemsIn", "A Mouse."
- InvalidSystem% = 1
- IF SoundCardWarning = 2 THEN
- SoundCardWarning% = 1
- ENDIF
- ENDIF
-
-
-
- CHECK386:
- IF GetProcessorType() < 3 THEN
- AddListItem "ListItemsIn", "At least a 386 processor."
- InvalidSystem% = 1
- IF SoundCardWarning = 2 THEN
- SoundCardWarning% = 1
- ENDIF
- ENDIF
-
-
- VGACHECK:
- IF GetScreenHeight() < 480 THEN
- AddListItem "ListItemsIn", "Any VGA or better video adaptor"
- InvalidSystem% = 1
- IF SoundCardWarning = 2 THEN
- SoundCardWarning% = 1
- ENDIF
- ENDIF
-
-
- COLOR256:
- IF Verify256Color = 0 THEN
- AddListItem "ListItemsIn", "256 Color Mode."
- InvalidSystem% = 1
- IF SoundCardWarning = 2 THEN
- SoundCardWarning% = 1
- ENDIF
- ENDIF
-
-
-
- IF (InvalidSystem% = 1 AND SoundCardWarning <> 2) THEN
- SHOWMIN:
- sz$ = UIStartDlg(CUIDLL$, EXTENDEDLIST, "FListDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO SHOWMIN
- ELSE
- UIPop 1
- ENDIF
- ENDIF
-
- IF AutoexecWasModified% = 1 THEN
- WARN:
- sz$ = UIStartDlg(CUIDLL$, ADDHELP, "FInfoDlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO WARN
- ENDIF
- UIPop 1
- ENDIF
-
- IF SoundCardWarning% <> 0 THEN
- SOUNDWARN:
- sz$ = UIStartDlg(CUIDLL$, CDBADFILE, "FInfoDlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO SOUNDWARN
- ENDIF
- UIPop 1
- ENDIF
-
- QUIT:
- ON ERROR GOTO ERRQUIT
-
- IF ERR = 0 THEN
- dlg% = EXITSUCCESS
- ELSEIF ERR = STFQUIT THEN
- dlg% = EXITQUIT
- ELSE
- dlg% = EXITFAILURE
- END IF
- QUITL1:
- IF dlg% = EXITQUIT THEN
- UIPop 1
- END
- ELSEIF dlg% = EXITFAILURE THEN
- dlg% = EXITQUIT
- END IF
-
- sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO QUITL1
- END IF
- UIPop 1
- END
-
- ERRQUIT:
- i% = DoMsgBox("Setup failed.", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
- END
-
-
-
- BADPATH:
- sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
- IF sz$ = "REACTIVATE" THEN
- GOTO BADPATH
- END IF
- UIPop 1
- RETURN
-
- ASKQUIT:
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
-
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO ASKQUIT
- ELSE
- UIPop 1
- END IF
- RETURN
-
-
- '** Purpose:
- '** Appends a file name to the end of a directory path,
- '** inserting a backslash character as needed.
- '** Arguments:
- '** szDir$ - full directory path (with optional ending "\")
- '** szFile$ - filename to append to directory
- '** Returns:
- '** Resulting fully qualified path name.
- '*************************************************************************
- FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
- IF szDir$ = "" THEN
- MakePath = szFile$
- ELSEIF szFile$ = "" THEN
- MakePath = szDir$
- ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
- MakePath = szDir$ + szFile$
- ELSE
- MakePath = szDir$ + "\" + szFile$
- END IF
- END FUNCTION
-
- '**
- '** Purpose:
- '** Arguments:
- '** Returns: 0=Okay, 1=None, 2=Older, 3=Newer, 4=Incomplete
- '*************************************************************************
- FUNCTION QTFilesOkay (szTemp$) STATIC AS INTEGER
-
- QTFilesOkay = 0
- FOR i% = 1 TO QTFileCount% STEP 1
- szKey$ = "QT" + STR$(i%)
- szFile$ = GetSectionKeyFilename("Quick Time", szKey$)
- IF i% = 1 THEN
- QTDestDir$ = FindFileUsingFileOpen(szFile$)
- IF QTDestDir$ = "" THEN
- QTDestDir$ = WinDrive$ + ":\QTW\BIN"
- ELSE
- QTDestDir$ = MID$(QTDestDir$, 1, (LEN(QTDestDir$) - LEN(szFile$) - 1))
- ENDIF
- ENDIF
- szFullPathFile$ = MakePath(QTDestDir$, szFile$)
- szDate$ = GetDateOfFile(szFullPathFile$)
- IF DoesFileExist(szFullPathFile$, femExists) = 0 THEN
- IF i% = 1 THEN
- QTFilesOkay = 1
- ELSE
- QTFilesOkay = 4
- ENDIF
- GOTO DONEQTCHECK
- ELSE
- szDate$ = GetDateOfFile(szFullPathFile$)
- IF i% = 1 THEN
- szSectionDate$ = GetSectionKeyDate("Quick Time", "QT 1")
- szSectionYear% = GetYearFromDate(szSectionDate$)
- szSectionMonth% = GetMonthFromDate(szSectionDate$)
- szSectionDay% = GetDayFromDate(szSectionDate$)
- ENDIF
- tmpVal% = VerifyQTDate (szDate$)
- IF tmpVal% = 1 THEN
- QTFilesOkay = 2
- GOTO DONEQTCHECK
- ELSEIF tmpVal% = 2 THEN
- QTFilesOkay = 3
- GOTO DONEQTCHECK
- ENDIF
- ENDIF
- NEXT i%
-
- DONEQTCHECK:
- CheckQTFiles% = 1
- END FUNCTION
-
- '**
- '** Purpose:
- '** Arguments:
- '** Returns:
- '** 0=same, 1=older, 2=newer -- than section date
- '*************************************************************************
- FUNCTION VerifyQTDate ( szDate$ ) STATIC AS INTEGER
-
- VerifyQTDate = 0
- newval% = GetYearFromDate(szDate$)
- IF (newval% <> szSectionYear%) THEN
- IF (newval% < szSectionYear%) THEN
- VerifyQTDate = 1
- ELSE
- VerifyQTDate = 2
- END IF
- GOTO DONE1
- END IF
-
- newval% = GetMonthFromDate(szDate$)
- IF (newval% <> szSectionMonth%) THEN
- IF (newval% < szSectionMonth%) THEN
- VerifyQTDate = 1
- ELSE
- VerifyQTDate = 2
- END IF
- GOTO DONE1
- END IF
-
- newval% = GetDayFromDate(szDate$)
- IF (newval% <> szSectionDay%) THEN
- IF (newval% < szSectionDay%) THEN
- VerifyQTDate = 1
- ELSE
- VerifyQTDate = 2
- END IF
- GOTO DONE1
- END IF
-
- DONE1:
-
- END FUNCTION
-
-
- '**
- '** Purpose:
- '** Arguments:
- '** Returns:
- '*************************************************************************
- FUNCTION GetNewDestination ( szDir$ ) STATIC AS STRING
-
- GetNewDestination = szDir$
- GETPATH:
- SetSymbolValue "EditTextIn", szDir$
- SetSymbolValue "EditFocus", "END"
-
- GETPATHL1:
- sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
-
- IF sz$ = "CONTINUE" THEN
- GetNewDestination = GetSymbolValue("EditTextOut")
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO GETPATHL1
- ELSEIF sz$ = "BACK" THEN
- BackedUp% = 1
- UIPop 1
- ELSEIF sz$ = "EXIT" THEN
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
- TMP1:
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO TMP1
- ELSE
- UIPop 1
- END IF
- GOTO GETPATHL1
- ELSE
- UIPop 1
- END IF
-
- END FUNCTION
-
- '**
- '** Purpose:
- '** Arguments:
- '** none.
- '** Returns: cannot call till files have been installed to destination.
- '** none.
- '*************************************************************************
- FUNCTION AddCDromDriveLetter(szLabel$, szWord$) STATIC AS INTEGER
-
- '' Update file with CDROM Drive Letter
-
- SysPFileName$ = MakePath(DEST$, GetSectionKeyFilename("Files", szLabel$))
- TmpFile$ = MakePath(DEST$, "DRIVELET.TMP")
-
- valstat% = ChangeDriveLetter(SysPFileName$, TmpFile$, CDdrive$, szWord$)
-
- IF valstat% = 0 THEN
- CopyFile TmpFile$, SysPFileName$, cmoOverwrite, 0
- RemoveFile TmpFile$, cmoForce
- ELSEIF valstat% = 1 THEN
- RemoveFile TmpFile$, cmoForce
- ENDIF
-
- AddCDromDriveLetter = valstat%
-
- END FUNCTION
-
- '**
- '** Purpose:
- '** Arguments:
- '** Returns:
- '*************************************************************************
- SUB PromptQT (szType%) STATIC
-
- BackedUp% = 0
- SetSymbolValue "RadioDefault", UserChoice$
- QT1:
- sz$ = UIStartDlg(CUIDLL$, szType%, "FRadioDlgProc", 0, "")
- IF sz$ = "CONTINUE" THEN
- UIPop 1
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO QT1
- ELSEIF sz$ = "BACK" THEN
- BackedUp% = 1
- UIPop 1
- ELSEIF sz$ = "EXIT" THEN
- sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
- QT2:
- IF sz$ = "EXIT" THEN
- UIPopAll
- ERROR STFQUIT
- ELSEIF sz$ = "REACTIVATE" THEN
- GOTO QT2
- ELSE
- UIPop 1
- ENDIF
- GOTO QT1
- ENDIF
-
- UserChoice$ = GetSymbolValue("ButtonChecked")
- END SUB
-
-
-
- '**
- '** Purpose: Creates a Program Group and a Program Item
- '** Arguments: None
- '** Returns: Nothing
- '*************************************************************************
- SUB CreateIcon STATIC
-
- CreateProgmanGroup "Earthquake", "", cmoNone
- ShowProgmanGroup "Earthquake", 1, cmoNone
- CreateProgmanItem "Earthquake", "Earthquake", MakePath(DEST$, GetSectionKeyFilename("Files", "EXE")), "", cmoOverwrite
- CreateProgmanItem "Earthquake", "Read Me", "write "+MakePath(DEST$, GetSectionKeyFilename("Files", "HLP")), "", cmoOverwrite
- END SUB
-
-
-